<?php

class WucMenuHorizontal extends TTemplateControl {
//<editor-fold defaultstate="collapsed" desc="Variables de Configuracion">
  //variables privadas
  const NOMBRE_WEB_USER_CONTROL = "wucMenuHorizontal";
  const MENU_HORIZONTAL = "menuHorizontal";
  //indice de los arreglos de la consulta
  const ARRAY_CATEGORIAS = 0;
  const ARRAY_FLUJO_PLANTILLAS = 1;
  const ARRAY_FLUJO_WORKFLOW = 2;
  const ARRAY_PAGINAS = 3;
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getIdEmpresa() { return $this->getViewState("IdEmpresa"); }
  public function setIdEmpresa($value) { $this->setViewState("IdEmpresa", $value); }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * inicializa valores de los controles
   * @author VSR, 01/01/2011
   */
  protected function inicializaControles() {
    $html = "";
    try {
      $oUsuarioWf = new UsuarioWf();
      $oUsuarioWf = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      $idUsuario = $oUsuarioWf->getId();
      $idEmpresa = Utilidades::obtenerIdEmpresaActiva();
      $html = Utilidades::obtenerSessionPorNombre(self::MENU_HORIZONTAL.$idEmpresa);

      //si no esta en sesion entonces lo obtiene y lo construye
      if(is_null($html)){
        $arr = WfWorkflow::obtenerOpcionesMenu($idUsuario, $idEmpresa);
        $html = $this->dibujarMenuHorizontal($arr);
      }
    } catch (Exception $e) {
      $html = "";
    }
    $this->lblMenuHorizontal->Text = $html;
  }

  /**
   * dibuja las opciones del menu
   * @param <type> $arr
   */
  private function dibujarMenuHorizontal($arr){
    $html = "";
    $sb = new StringBuilder();
    try {
      $idEmpresa = Utilidades::obtenerIdEmpresaActiva();
      //dibuja opcion HOME
      $html = $this->dibujarOpcionesHome($arr);
      if(!Utilidades::isNullOrEmpty($html)){
        $sb->appendLine($html);
      }

      //dibuja el resto de las opciones
      if(!Utilidades::isNullOrEmpty($arr)){
        $arrCategorias = $arr[self::ARRAY_CATEGORIAS];
        $totalRegistros = count($arrCategorias);
        for($i = 0; $i<= $totalRegistros - 1; $i++){
          $row = $arrCategorias[$i];
          $nombreCategoria = $row["Categoria"];

          switch ($nombreCategoria) {
            case "FLUJO":
              $html = $this->dibujarOpcionesFlujo($arr);
              break;
            case "CONFIGURACION":
              $html = $this->dibujarOpcionesConfiguracion($arr);
              break;
            case "GESTION":
              $html = $this->dibujarOpcionesGestion($arr);
              break;
            case "BUSCADOR":
              $html = $this->dibujarOpcionesBuscador($arr);
              break;
            default:
              //$html = "";
              //*** eliminar esta opcion del menu cuando se pase a produccion ***
              $html = $this->dibujarOpcionesSoloMuestra();
              break;
          }

          if(!Utilidades::isNullOrEmpty($html)){
            $sb->appendLine($html);
          }
        }
      }

      $html = $sb->toString();
      if(!Utilidades::isNullOrEmpty(trim($html))){
        $html = "<ul class=\"menu\" id=\"menu\">".$html."</ul>";
      }
      //graba el html del menu en sesion para consultarlo despues
      Utilidades::grabarSessionPorNombre(self::MENU_HORIZONTAL.$idEmpresa, $html);
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * dibuja las opciones relacionadas al FLUJO
   * @param <type> $arr
   * @author VSR, 05/06/2012
   */
  private function dibujarOpcionesFlujo($arr){
    $html = "";
    $sb = new StringBuilder();
    try {
      $themeBaseUrl = $this->Page->Theme->BaseUrl;
      $arrPlantillas = $arr[self::ARRAY_FLUJO_PLANTILLAS];
      $arrWorkflow = $arr[self::ARRAY_FLUJO_WORKFLOW];
      $totalRegistros = count($arrPlantillas);

      if($totalRegistros > 0){
        $sb->appendLine("<li>");
        $sb->appendLine("  <a href=\"#\" class=\"menulink\">Flujo</a>");
        $sb->appendLine("  <ul>");

        for($i = 0; $i<=$totalRegistros-1; $i++){
          $row = $arrPlantillas[$i];
          $nombrePlantilla = $row["NombrePlantilla"];
          $arrWorkflowPorPlantilla = Utilidades::arrayRowFilter($arrWorkflow, "NombrePlantilla == '".$nombrePlantilla."'");
          $totalWorkflow = count($arrWorkflowPorPlantilla);
          $classSubMenu = ($totalWorkflow == 0) ? "" : "class=\"sub\"";
          $classLine = ($totalRegistros == 1) ? "class=\"topline bottomline\"" : ( ($i == 0) ? "class=\"topline\"" : ( ($i == $totalRegistros - 1) ? "class=\"bottomline\"" : "" ) );

          if($totalWorkflow > 0){
            $html = $this->dibujarWorkflowPorPlantilla($arrWorkflowPorPlantilla);
            $sb->appendLine("<li ".$classLine.">");
            $sb->appendLine("  <a href=\"#\" ".$classSubMenu."><img src=\"".$themeBaseUrl."/img/18/add.png\" style=\"vertical-align: middle\" alt=\"\" />&nbsp;Crear ".$nombrePlantilla."</a>");
            if(!Utilidades::isNullOrEmpty($html)) {
              $sb->appendLine($html);
            }
            $sb->appendLine("</li>");
          }
        }
        
        $sb->appendLine("  </ul>");
        $sb->appendLine("</li>");
      }
      $html = $sb->toString();
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * dibuja los workflow asociados a una plantilla
   * @param <type> $arr
   * @return <type> 
   * @author VSR, 05/06/2012
   */
  private function dibujarWorkflowPorPlantilla($arr){
    $html = "";
    $sb = new StringBuilder();
    try {
      $themeBaseUrl = $this->Page->Theme->BaseUrl;
      $totalRegistros = count($arr);

      if($totalRegistros > 0){
        $sb->appendLine("  <ul>");

        for($i = 0; $i<=$totalRegistros-1; $i++){
          $row = $arr[$i];
          $nombre = $row["Nombre"];
          $clasePagina = $row["ClasePagina"];
          $idWorkflow = $row["Id"];
          $idEmpresa = $row["IdEmpresa"];
          $idCache = $row["IdCache"];
          $idFlujo = "0";
          $idPaso = "0";
          $idHistorial = "0";
          $replicarDatos = "0";
          $cargarFiltrosSesion = "0";
          $paginaFiltro = "";

          //formatea valores
          $queryString = Utilidades::obtenerQueryStringFlujo(Utilidades::QUERYSTRING_FLUJO_NORMAL, "", $idFlujo, $idWorkflow, $idEmpresa, $idPaso,
                                                             $idCache, $idHistorial, $replicarDatos, $cargarFiltrosSesion, $paginaFiltro);
          $href = "index.php?page=Workflow.".$clasePagina."&a=".$queryString;
          $classLine = ($totalRegistros == 1) ? "class=\"topline bottomline\"" : ( ($i == 0) ? "class=\"topline\"" : ( ($i == $totalRegistros - 1) ? "class=\"bottomline\"" : "" ) );

          $sb->appendLine("<li ".$classLine.">");
          $sb->appendLine("  <a href=\"".$href."\"><img src=\"".$themeBaseUrl."/img/18/new.png\" style=\"vertical-align: middle\" alt=\"\" />&nbsp;".$nombre."</a>");
          $sb->appendLine("</li>");
        }

        $sb->appendLine("  </ul>");
      }
      $html = $sb->toString();
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * dibuja las opciones relacionadas a la CONFIGURACION
   * @param <type> $arr
   * @author VSR, 05/06/2012
   */
  private function dibujarOpcionesConfiguracion($arr){
    $html = "";
    $sb = new StringBuilder();
    try {
      $themeBaseUrl = $this->Page->Theme->BaseUrl;
      $arrPaginas = $arr[self::ARRAY_PAGINAS];
      $arrPaginas = Utilidades::arrayRowFilter($arrPaginas, "NombreClase=='ListWorkflow' || NombreClase=='ListUsuario'");
      $totalRegistros = count($arrPaginas);

      if($totalRegistros > 0){
        $sb->appendLine("<li>");
        $sb->appendLine("  <a href=\"#\" class=\"menulink\">Configuraci&oacute;n</a>");
        $sb->appendLine("  <ul>");

        for($i = 0; $i<=$totalRegistros-1; $i++){
          $row = $arrPaginas[$i];
          $nombreClase = $row["NombreClase"];
          $classLine = ($totalRegistros == 1) ? "class=\"topline bottomline\"" : ( ($i == 0) ? "class=\"topline\"" : ( ($i == $totalRegistros - 1) ? "class=\"bottomline\"" : "" ) );

          switch ($nombreClase) {
            case "ListWorkflow":
              $icono = "setting.png";
              $nombre = "Workflow";
              break;
            case "ListUsuario":
              $icono = "user.png";
              $nombre = "Usuarios";
              break;
            default:
              $icono = "";
              $nombre = "";
              break;
          }

          $sb->appendLine("<li ".$classLine.">");
          $sb->appendLine("  <a href=\"index.php?page=Workflow.".$nombreClase."\"><img src=\"".$themeBaseUrl."/img/18/".$icono."\" style=\"vertical-align: middle\" alt=\"\" />&nbsp;".$nombre."</a>");
          $sb->appendLine("</li>");
        }

        $sb->appendLine("  </ul>");
        $sb->appendLine("</li>");
      }
      $html = $sb->toString();
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * dibuja las opciones relacionadas a la GESTION
   * @param <type> $arr
   * @author VSR, 05/06/2012
   */
  private function dibujarOpcionesGestion($arr){
    $html = "";
    $sb = new StringBuilder();
    try {
      $themeBaseUrl = $this->Page->Theme->BaseUrl;
      $arrPaginas = $arr[self::ARRAY_PAGINAS];
      $arrPaginas = Utilidades::arrayRowFilter($arrPaginas, "NombreClase=='FrmEstadistica' || NombreClase=='FrmReporte'");
      $totalRegistros = count($arrPaginas);

      if($totalRegistros > 0){
        $sb->appendLine("<li>");
        $sb->appendLine("  <a href=\"#\" class=\"menulink\">Gesti&oacute;n</a>");
        $sb->appendLine("  <ul>");

        for($i = 0; $i<=$totalRegistros-1; $i++){
          $row = $arrPaginas[$i];
          $nombreClase = $row["NombreClase"];
          $classLine = ($totalRegistros == 1) ? "class=\"topline bottomline\"" : ( ($i == 0) ? "class=\"topline\"" : ( ($i == $totalRegistros - 1) ? "class=\"bottomline\"" : "" ) );

          switch ($nombreClase) {
            case "FrmEstadistica":
              $icono = "chart.png";
              $nombre = "Estad&iacute;sticas";
              break;
            case "FrmReporte":
              $icono = "reports.png";
              $nombre = "Reportes";
              break;
            default:
              $icono = "";
              $nombre = "";
              break;
          }

          $sb->appendLine("<li ".$classLine.">");
          $sb->appendLine("  <a href=\"index.php?page=Workflow.".$nombreClase."\"><img src=\"".$themeBaseUrl."/img/18/".$icono."\" style=\"vertical-align: middle\" alt=\"\" />&nbsp;".$nombre."</a>");
          $sb->appendLine("</li>");
        }

        $sb->appendLine("  </ul>");
        $sb->appendLine("</li>");
      }
      $html = $sb->toString();
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * dibuja las opciones relacionadas al BUSCADOR
   * @param <type> $arr
   * @author VSR, 05/06/2012
   */
  private function dibujarOpcionesBuscador($arr){
    $html = "";
    $sb = new StringBuilder();
    try {
      $themeBaseUrl = $this->Page->Theme->BaseUrl;
      $arrPaginas = $arr[self::ARRAY_PAGINAS];
      $arrPaginas = Utilidades::arrayRowFilter($arrPaginas, "NombreClase=='ListBuscadorHistoricos'");
      $totalRegistros = count($arrPaginas);

      if($totalRegistros > 0){
        $sb->appendLine("<li>");
        $sb->appendLine("  <a href=\"#\" class=\"menulink\">Buscador</a>");
        $sb->appendLine("  <ul>");

        for($i = 0; $i<=$totalRegistros-1; $i++){
          $row = $arrPaginas[$i];
          $nombreClase = $row["NombreClase"];
          $classLine = ($totalRegistros == 1) ? "class=\"topline bottomline\"" : ( ($i == 0) ? "class=\"topline\"" : ( ($i == $totalRegistros - 1) ? "class=\"bottomline\"" : "" ) );

          switch ($nombreClase) {
            case "ListBuscadorHistoricos":
              $icono = "zoom.png";
              $nombre = "Flujos Hist&oacute;ricos";
              break;
            default:
              $icono = "";
              $nombre = "";
              break;
          }

          $sb->appendLine("<li ".$classLine.">");
          $sb->appendLine("  <a href=\"index.php?page=Workflow.".$nombreClase."\"><img src=\"".$themeBaseUrl."/img/18/".$icono."\" style=\"vertical-align: middle\" alt=\"\" />&nbsp;".$nombre."</a>");
          $sb->appendLine("</li>");
        }

        $sb->appendLine("  </ul>");
        $sb->appendLine("</li>");
      }
      $html = $sb->toString();
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * dibuja opciones de MUESTRA
   * @author VSR, 05/06/2012
   */
  private function dibujarOpcionesSoloMuestra(){
    $html = "";
    $sb = new StringBuilder();
    try {
      $sb->appendLine("<li>");
      $sb->appendLine("  <a href=\"#\" class=\"menulink\">Men&uacute; de ejemplo</a>");
      $sb->appendLine("  <ul>");
      $sb->appendLine("    <li class=\"topline\"><a href=\"#\">Item 3.1</a></li>");
      $sb->appendLine("    <li>");
      $sb->appendLine("      <a href=\"#\" class=\"sub\">Item 3.2</a>");
      $sb->appendLine("      <ul>");
      $sb->appendLine("        <li class=\"topline\"><a href=\"#\">Item 3.2.1</a></li>");
      $sb->appendLine("        <li>");
      $sb->appendLine("          <a href=\"#\" class=\"sub\">Item 3.2.2</a>");
      $sb->appendLine("          <ul>");
      $sb->appendLine("            <li class=\"topline\"><a href=\"#\">Item 3.2.2.1</a></li>");
      $sb->appendLine("            <li class=\"bottomline\"><a href=\"#\">Item 3.2.2.2</a></li>");
      $sb->appendLine("          </ul>");
      $sb->appendLine("        </li>");
      $sb->appendLine("        <li class=\"bottomline\"><a href=\"#\">Item 3.2.3</a></li>");
      $sb->appendLine("      </ul>");
      $sb->appendLine("    </li>");
      $sb->appendLine("    <li class=\"bottomline\"><a href=\"#\">Item 3.3</a></li>");
      $sb->appendLine("  </ul>");
      $sb->appendLine("</li>");

      $html = $sb->toString();
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * dibuja opciones de HOME
   * @author VSR, 05/06/2012
   */
  private function dibujarOpcionesHome(){
    $html = "";
    $sb = new StringBuilder();
    try {
      $sb->appendLine("<li>");
      $sb->appendLine("  <a href=\"index.php?page=Workflow.Home\" class=\"menulink\">Inicio</a>");
      $sb->appendLine("</li>");

      $html = $sb->toString();
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }


//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function  onLoad($param) {
    parent::onLoad($param);
    //registra los bloques javascript respectivos
    $this->inicializaControles();
  }
//</editor-fold>
  
}
?>
